From: Ray Strode Date: Tue, 6 Sep 2011 12:37:16 +0000 (-0400) Subject: gdm: add optional logo to user list X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~7664 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=391a220dc197b94da3a5c51f94892bfa92faa800;p=gnome-shell.git gdm: add optional logo to user list This commit adds the ability to set a small logo at the login screen for administrators and distributions. https://bugzilla.gnome.org/show_bug.cgi?id=658062 --- diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js index 0a1bd29cc..bde2e4940 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -46,10 +46,13 @@ const _FADE_ANIMATION_TIME = 0.16; const _RESIZE_ANIMATION_TIME = 0.25; const _SCROLL_ANIMATION_TIME = 2.0; const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; +const _LOGO_ICON_NAME_SIZE = 48; const _LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; const _FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication'; +const _LOGO_KEY = 'logo'; + let _loginDialog = null; function _fadeInActor(actor) { @@ -771,6 +774,12 @@ LoginDialog.prototype = { this._fprintManager = new Fprint.FprintManager(); this._startFingerprintConversationIfNeeded(); + this._settings.connect('changed::' + _LOGO_KEY, + Lang.bind(this, this._updateLogo)); + + this._logoBox = new St.Bin({ style_class: 'login-dialog-logo-box' }); + this.contentLayout.add(this._logoBox); + this._updateLogo(); this._titleLabel = new St.Label({ style_class: 'login-dialog-title', text: C_("title", "Sign In") }); @@ -887,6 +896,20 @@ LoginDialog.prototype = { })); }, + _updateLogo: function() { + this._logoBox.child = null; + let path = this._settings.get_string(_LOGO_KEY); + + if (path) { + let file = Gio.file_new_for_path(path); + let uri = file.get_uri(); + + let textureCache = St.TextureCache.get_default(); + this._logoBox.child = textureCache.load_uri_async(uri, -1, _LOGO_ICON_NAME_SIZE); + } + + }, + _onReset: function(client, serviceName) { this._greeterClient.call_start_conversation(_PASSWORD_SERVICE_NAME); this._startFingerprintConversationIfNeeded(); @@ -894,7 +917,8 @@ LoginDialog.prototype = { let tasks = [this._hidePrompt, new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel, - this._fadeInNotListedButton]), + this._fadeInNotListedButton, + this._fadeInLogo]), function() { this._sessionList.close(); @@ -1219,7 +1243,8 @@ LoginDialog.prototype = { }, new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel, - this._fadeOutNotListedButton]), + this._fadeOutNotListedButton, + this._fadeOutLogo]), function() { this._greeterClient.call_begin_verification(_PASSWORD_SERVICE_NAME); @@ -1229,6 +1254,14 @@ LoginDialog.prototype = { batch.run(); }, + _fadeInLogo: function() { + return _fadeInActor(this._logoBox); + }, + + _fadeOutLogo: function() { + return _fadeOutActor(this._logoBox); + }, + _fadeInTitleLabel: function() { return _fadeInActor(this._titleLabel); }, @@ -1264,7 +1297,8 @@ LoginDialog.prototype = { }, new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel, - this._fadeOutNotListedButton]), + this._fadeOutNotListedButton, + this._fadeOutLogo]), function() { return this._userList.shrinkToNaturalHeight();